iT邦幫忙

2024 iThome 鐵人賽

DAY 19
0
Python

進擊的Python系列 第 20

Day19-NumPy(佩托拉)

  • 分享至 

  • xImage
  •  

大家好!我是佩托拉~我分享NumPy

https://ithelp.ithome.com.tw/upload/images/20240823/20163257KpmV36ONk4.jpg
圖片來源:(https://baike.baidu.hk/item/%E4%BD%A9%E7%89%B9%E6%8B%89/5384575)

NumPy

https://ithelp.ithome.com.tw/upload/images/20240823/20163257OYJAR66qeJ.png
圖片來源:NumPy

是Python中用科學計算的基本套件,提供高效能的多維陣列物件和對這些陣列進行操作的工具。在數據科學、機器學習和數值計算中,NumPy是不可或缺的工具

為什麼要使用NumPy?

  • 高效能的多維陣列: NumPy 陣列比 Python 內建的列表速度更快,且佔用更少的記憶體
  • 廣泛的數學函數: 提供大量的數學函數,如三角函數、統計函數、線性代數運算
  • 廣泛的生態系統: 是許多科學計算庫的基礎,例如:SciPy、Pandas、Matplotlib

NumPy資料型態

整數型態

  • int8int16int32int64

分別表示 8 位、16 位、32 位和 64 位 有符號整數

  • uint8uint16uint32uint64

分別表示 8 位、16 位、32 位和 64 位 無符號整數

浮點數型態

  • float16float32float64

分別表示半精度浮點數、單精度浮點數和雙精度浮點數

布林型態

  • bool

布林值,True 或 False

複數型態

  • complex64complex128

分別表示複數,其中實部和虛部都是 32 位或 64 位浮點數

其他型態

  • string

定長字串

  • object

可以存儲任意 Python 對象

import numpy as np

# 創建一個整數型態的陣列
int_arr = np.array([1, 2, 3])
print(int_arr.dtype)  # int64

# 創建一個浮點數型態的陣列
float_arr = np.array([1.1, 2.2, 3.3], dtype=np.float32)
print(float_arr.dtype)  # float32

# 將整數陣列轉換為浮點數陣列
float_arr_from_int = int_arr.astype(np.float64)
print(float_arr_from_int.dtype)  # float64

陣列操作

# 陣列索引
arr = np.array([1, 2, 3, 4, 5])
arr2d = np.array([[1, 2, 3], [4, 5, 6]])

print(arr[0])  # 取得第一個元素 

輸出 1

print(arr2d[1, 2])  # 取得第二行第三列的元素

輸出 6


# 陣列切片
print(arr[1:4])  # 取得索引 1 到 3 的元素

輸出 [2 3 4]

print(arr2d[:, 1])  # 取得第二列的所有元素

輸出 [2 5]


# 陣列運算
print(arr + 2)  # 陣列每個元素加 2

輸出 [3 4 5 6 7]

print(arr * 2)  # 陣列每個元素乘 2

輸出 [ 2  4  6  8 10]

print(arr2d.dot(arr2d.T))  # 矩陣乘法

輸出
[[14 32]
 [32 77]]


# 統計函數
print(arr.mean())  # 計算平均值

輸出 3.0

print(arr.std())  # 計算標準差

輸出 1.4142135623730951

print(arr.max())  # 找到最大值

輸出 5

常用函數

np.random 產生隨機數
np.linspace 產生等差數列
np.reshape 重新塑造陣列的形狀
np.transpose 轉置矩陣
np.linalg 線性代數運算

計算向量內積

# 計算兩個向量的內積
vector1 = np.array([1, 2, 3])
vector2 = np.array([4, 5, 6])
dot_product = np.dot(vector1, vector2)
print(dot_product)

輸出 32

建立NumPy陣列方法

1.從 Python list 或 tuple 建立

import numpy as np

# 一維陣列
list1 = [1, 2, 3, 4]
array1 = np.array(list1)
print(list1)

輸出 [1, 2, 3, 4]

# 二維陣列
list2 = [[1, 2, 3], [4, 5, 6]]
array2 = np.array(list2)
print(list2)

輸出 [[1, 2, 3], [4, 5, 6]]

2.使用 NumPy 內建函數

np.arange()

產生等差數列

# 產生從 0 到 9 的陣列
array3 = np.arange(10)
print(array3)

輸出 [0 1 2 3 4 5 6 7 8 9]

np.linspace()

產生等差數列,指定起始、結束值和元素個數

# 產生從 0 到 10,有 5 個元素的陣列
array4 = np.linspace(0, 10, 5)
print(array4)

np.zeros()

產生全為 0 的陣列

# 產生一個 3x3 的全零陣列
array5 = np.zeros((3, 3))
print(array5)

np.ones()

產生全為 1 的陣列

# 產生一個 2x4 的全一陣列
array6 = np.ones((2, 4))
print(array6)

np.eye()

產生單位矩陣

# 產生一個 3x3 的單位矩陣
array7 = np.eye(3)
print(array7)

np.random.rand()

產生隨機數陣列 (0, 1) 均勻分布

# 產生一個 2x2 的隨機數陣列
array8 = np.random.rand(2, 2)
print(array8)

np.random.randn()

產生隨機數陣列 標準常態分布

# 產生一個 3x3 的隨機數陣列 (標準常態分布)
array9 = np.random.randn(3, 3)
print(array9)
import numpy as np

# 創建一個一維陣列
arr = np.array([1, 2, 3, 4, 5])
print(arr)

輸出 [1 2 3 4 5]

# 創建一個二維陣列
arr2d = np.array([[1, 2, 3], [4, 5, 6]])
print(arr2d)

輸出
[[1 2 3]
 [4 5 6]]
 
# 產生一個從 0 到 9 的陣列
arr_range = np.arange(10)
print(arr_range)

輸出 [0 1 2 3 4 5 6 7 8 9]

# 產生一個 3x3 的全零陣列
arr_zeros = np.zeros((3, 3))
print(arr_zeros)

輸出
[[0. 0. 0.]
 [0. 0. 0.]
 [0. 0. 0.]]
 
# 產生一個 2x2 的全一陣列
arr_ones = np.ones((2, 2))
print(arr_ones)

輸出
[[1. 1.]
 [1. 1.]]

上一篇
Day18-Dataframe
下一篇
Day19-讀取陣列
系列文
進擊的Python36
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言